// Copyright (C) <2018> Zealcomm Inc.
//
// SPDX-License-Identifier: Apache-2.0
#import <Foundation/Foundation.h>
#import "IRTC/IRTCRemoteStream.h"
/// @cond
/// IRTCP2PPeerConnectionChannelObserver is an ObjectiveC wrapper for
/// P2PPeerConnectionChannelObserver.<br>IRTCP2PPeerConnectionChannelObserver是P2PPeerConnectionChannelObserver的ObjectiveC外包。
@protocol IRTCP2PPeerConnectionChannelObserver<NSObject>
/**
  @brief This function will be invoked when received a invitation.<br>当收到一个邀请时这个函数会被触发。
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onInvitedFrom:(NSString*)remoteUserId;
/**
  @brief This function will be invoked when a remote user accepted current
  user's invitation.<br>当一个远端用户接受当前用户的邀请时这个函数会被触发。
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onAcceptedFrom:(NSString*)remoteUserId;
/**
  @brief This function will be invoked when a remote user denied current user's
  invitation.<br>当一个远端用户拒绝当前用户的邀请时这个函数会被触发。
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onDeniedFrom:(NSString*)remoteUserId;
/**
  @brief This function will be invoked when a chat is started. (This event
  haven't been implemented yet)<br>当一个聊天开始时这个函数会被触发。（这个事件还没实现。）
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onStoppedFrom:(NSString*)remoteUserId;
/**
  @brief This function will be invoked when a chat is stopped. (This event
  haven't been implemented yet)<br>当一个聊天结束时这个函数会被触发。（这个事件还没实现。）
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onStartedFrom:(NSString*)remoteUserId;
/**
  @brief This function will be invoked when received data from a remote user.
  (This event haven't been implemented yet)<br>当从远端用户接受到数据时这个函数会被触发。（这个事件还没实现。）
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
  @param data Data received.<br>接收到的数据。
*/
- (void)onDataReceivedFrom:(NSString*)remoteUserId withData:(NSString*)data;
/**
  @brief This function will be invoked when a remote stream is available.<br>当有一条远端媒体流可用时这个函数会被触发。
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onStreamAdded:(IRTCRemoteStream*)stream;
/**
  @brief This function will be invoked when a remote stream is removed.<br>当一条远端媒体流给移除时这个函数会被触发。
  @param remoteUserId Remote user’s ID<br>远端用户的ID。
*/
- (void)onStreamRemoved:(IRTCRemoteStream*)stream;
@end
/// @endcond
